<!DOCTYPE html>
<html lang="en">
	<head>
		<title>three.js webgl - OBJLoader + MTLLoader</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
		<style>
			body {
				font-family: Monospace;
				background-color: #ccc;
				color: #fff;
				margin: 0px;
				overflow: hidden;
			}
			#info {
				color: #fff;
				position: absolute;
				top: 10px;
				width: 100%;
				text-align: center;
				z-index: 100;
				display:block;
			}
			#info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer }
		</style>
	</head>

	<body>


		<script src="/three.min.js"></script>

		<script src="loaders/DDSLoader.js"></script>
		<script src="loaders/MTLLoader.js"></script>
		<script src="loaders/OBJLoader.js"></script>
        <script src="TrackballControls.js"></script>
		<script src="libs/stats.min.js"></script>

		<script>
			var container, stats, clock, trackballControls;
			var camera, scene, renderer;
			var mouseX = 0, mouseY = 0;
			var windowHalfX = window.innerWidth / 2;
			var windowHalfY = window.innerHeight / 2;
			init();
			animate();
			function init() {
                clock = new THREE.Clock();
				container = document.createElement( 'div' );
				document.body.appendChild( container );
				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
				camera.position.z = 250;
                trackballControls = new THREE.TrackballControls(camera);
                trackballControls.rotateSpeed = 1.0;
			    trackballControls.zoomSpeed = 1.0;
			    trackballControls.panSpeed = 1.0;
			
			    trackballControls.staticMoving = true;
				// scene
				scene = new THREE.Scene();
				var ambientLight = new THREE.AmbientLight( 0xcccccc, 0.8 );
				scene.add( ambientLight );
				var pointLight = new THREE.PointLight( 0xffffff, 0.4 );
				camera.add( pointLight );
				scene.add( camera );
				// model
				var onProgress = function ( xhr ) {
					if ( xhr.lengthComputable ) {
						var percentComplete = xhr.loaded / xhr.total * 100;
						console.log( Math.round( percentComplete, 2 ) + '% downloaded' );
					}
				};
				var onError = function () { };
				THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
				new THREE.MTLLoader()
					.setPath( 'obj/' )
					.load( 'xiaomi2.mtl', function ( materials ) {
						materials.preload();
						new THREE.OBJLoader()
							.setMaterials( materials )
							.setPath( 'obj/' )
							.load( 'xiaomi2.obj', function ( object ) {
								object.position.y = - 15;
								scene.add( object );
							}, onProgress, onError );
					} );
				//
				renderer = new THREE.WebGLRenderer({antialias:true});
				renderer.setPixelRatio( window.devicePixelRatio );
				renderer.setSize( window.innerWidth, window.innerHeight );
				container.appendChild( renderer.domElement );
				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
				//
				window.addEventListener( 'resize', onWindowResize, false );
			}
			function onWindowResize() {
				windowHalfX = window.innerWidth / 2;
				windowHalfY = window.innerHeight / 2;
				camera.aspect = window.innerWidth / window.innerHeight;
				camera.updateProjectionMatrix();
				renderer.setSize( window.innerWidth, window.innerHeight );
			}
			function onDocumentMouseMove( event ) {
				mouseX = ( event.clientX - windowHalfX ) / 2;
				mouseY = ( event.clientY - windowHalfY ) / 2;
			}
			//
			function animate() {
				requestAnimationFrame( animate );
				render();
			}
			function render() {
                var delta = clock.getDelta();
				trackballControls.update(delta);
				camera.lookAt( scene.position );
				renderer.render( scene, camera );
			}
		</script>

	</body>
</html>